EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
</description>
</key>
+ <key name="disable-user-extensions" type="b">
+ <default>false</default>
+ <summary>Disable user extensions</summary>
+ <description>
+ Disable all extensions the user has enabled without affecting
+ the 'enabled-extension' setting.
+ </description>
+ </key>
<key name="disable-extension-version-validation" type="b">
<default>true</default>
<summary>Disables the validation of extension version compatibility</summary>
const disconnect = Lang.bind(_signals, _signals.disconnect);
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
+const DISABLE_USER_EXTENSIONS_KEY = 'disable-user-extensions';
const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validation';
var initted = false;
}
function getEnabledExtensions() {
- let extensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
- if (!Array.isArray(Main.sessionMode.enabledExtensions))
+ let extensions;
+ if (Array.isArray(Main.sessionMode.enabledExtensions))
+ extensions = Main.sessionMode.enabledExtensions;
+ else
+ extensions = [];
+
+ if (global.settings.get_boolean(DISABLE_USER_EXTENSIONS_KEY))
return extensions;
- return Main.sessionMode.enabledExtensions.concat(extensions);
+ return extensions.concat(global.settings.get_strv(ENABLED_EXTENSIONS_KEY));
}
function onEnabledExtensionsChanged() {
function _loadExtensions() {
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
+ global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged);
enabledExtensions = getEnabledExtensions();